-- ToME - Tales of Maj'Eyal
-- Copyright (C) 2009, 2010, 2011, 2012 Nicolas Casalini
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
--
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org

local imbue_ring = function(npc, player)
	player:showInventory("Какое кольцо нужно украсить?", player:getInven("INVEN"), function(o) return o.type == "jewelry" and o.subtype == "ring" and not o.egoed and not o.unique and not o.rare end, function(ring, ring_item)
		player:showInventory("Какой камень использовать?", player:getInven("INVEN"), function(gem) return gem.type == "gem" and (gem.material_level or 99) <= ring.material_level and gem.imbue_powers end, function(gem, gem_item)
			local price = 10 + gem.material_level * 5 + ring.material_level * 7
			if price > player.money then require("engine.ui.Dialog"):simplePopup("Не хватает денег", "Эта операция стоит "..price.." монет, которых у тебя нет.") return end

			require("engine.ui.Dialog"):yesnoPopup("Стоимость работы", "Эта операция стоит "..price.." монет. Украсить кольцо этим камнем?", function(ret) if ret then
				player:incMoney(-price)
				player:removeObject(player:getInven("INVEN"), gem_item)
				ring.wielder = ring.wielder or {}
				table.mergeAdd(ring.wielder, gem.imbue_powers, true)
				ring.name = gem.name .. " ring"
				ring.been_imbued = true
				ring.egoed = true
				game.logPlayer(player, "%s создаёт: %s", npc.name:capitalize(), ring:getName{do_colour=true, no_count=true})
			end end)
		end)
	end)
end

local artifact_imbue_amulet = function(npc, player)
	player:showInventory("Какой амулет украсить камнями?", player:getInven("INVEN"), function(o) return o.type == "jewelry" and o.subtype == "amulet" and not o.egoed and not o.unique and not o.rare end, function(amulet, amulet_item)
		player:showInventory("Выберите первый камень.", player:getInven("INVEN"), function(gem1) return gem1.type == "gem" and (gem1.material_level or 99) <= amulet.material_level and gem1.imbue_powers end, function(gem1, gem1_item)
			player:showInventory("Выберите второй камень.", player:getInven("INVEN"), function(gem2) return gem2.type == "gem" and (gem2.material_level or 99) <= amulet.material_level and gem1.name ~= gem2.name and gem2.imbue_powers end, function(gem2, gem2_item)
				local price = 390
				if price > player.money then require("engine.ui.Dialog"):simplePopup("Не хватает денег", "Эта операция стоит "..price.." монет, которых у тебя нет.") return end

				require("engine.ui.Dialog"):yesnoPopup("Стоимость работы", "Эта операция стоит "..price.." монет. Украсить амулет этими камнями?", function(ret) if ret then
					player:incMoney(-price)
					local gem3, tries = nil, 10
					while gem3 == nil and tries > 0 do gem3 = game.zone:makeEntity(game.level, "object", {type="gem"}, nil, true) tries = tries - 1 end
					if not gem3 then gem3 = rng.percent(50) and gem1 or gem2 end
					print("Вставить третий камень", gem3.name)

					if gem1_item > gem2_item then
						player:removeObject(player:getInven("INVEN"), gem1_item)
						player:removeObject(player:getInven("INVEN"), gem2_item)
					else
						player:removeObject(player:getInven("INVEN"), gem2_item)
						player:removeObject(player:getInven("INVEN"), gem1_item)
					end
					amulet.wielder = amulet.wielder or {}
					table.mergeAdd(amulet.wielder, gem1.imbue_powers, true)
					table.mergeAdd(amulet.wielder, gem2.imbue_powers, true)
					table.mergeAdd(amulet.wielder, gem3.imbue_powers, true)
					amulet.name = "Limmir's Amulet of the Moon"
					amulet.been_imbued = true
					amulet.unique = util.uuid()
					game.logPlayer(player, "%s создал: %s", npc.name:capitalize(), amulet:getName{do_colour=true, no_count=true})
				end end)
			end)
		end)
	end)
end

newChat{ id="welcome",
	text = [[Добро пожаловать в мой магазин, @playername@.]],
	answers = {
		{"Покажите мне Ваши товары.", action=function(npc, player)
			npc.store:loadup(game.level, game.zone)
			npc.store:interact(player)
		end, cond=function(npc, player) return npc.store and true or false end},
		{"Я ищу особое украшение.", jump="jewelry"},
		{"Вы заряжаете амулеты?", jump="artifact_jewelry", cond=function(npc, player) return npc.can_craft and player:hasQuest("master-jeweler") and player:isQuestStatus("master-jeweler", engine.Quest.COMPLETED, "limmir-survived") end},
		{"Я нашёл эту книгу, она выглядит интересной.", jump="quest", cond=function(npc, player) return npc.can_quest and player:hasQuest("master-jeweler") and player:hasQuest("master-jeweler"):has_tome(player) end},
		{"Прошу прошения, мне нужно идти!"},
	}
}

newChat{ id="jewelry",
	text = [[Вы пришли в правильное место, я отличный ювелир.
Если Вы принесёте мне драгоценный камень и не-магическое кольцо, я смогу вставить этот камень в кольцо.
Это стоит недорого, оплата зависит от качества камня и кольца. Качество кольца должно соответствовать качеству камня.]],
	answers = {
		{"Мне нужно украсить кольцо.", action=imbue_ring},
		{"Не сейчас, спасибо."},
	}
}

newChat{ id="artifact_jewelry",
	text = [[Да! Благодаря Вам это место очищено от скверны. Я останусь на этом острове для изучения магической ауры и, как и обещал, смогу создавать для Вас магические амулеты.
Принесите мне немагический амулет, два разных камня и я сделаю из этого магический амулет.
Я не потребую с Вас оплаты, так как Вы очень мне помогли, но в процессе ритуала на амулет наносится золотое напыление. Для этого потребуется около 390 золотых монет.]],
	answers = {
		{"Мне нужно украсить амулет.", action=artifact_imbue_amulet},
		{"Не сейчас, спасибо."},
	}
}

newChat{ id="quest",
	text = [[#LIGHT_GREEN#*Он быстро осматривает книгу и выглядит очень удивлённым.*#WHITE# Это удивительная находка! Действительно, удивительная!
С этими знаниями я смогу создавать сильнодействующие амулеты. Правда, для этого нужно найти особое место силы.
По слухам, такое место есть в южных горах. Старые легенды рассказывают о том, что когда Зимняя Луна подошла слишком близко к Солнцу, она растаяла и от неё откололся кусок, который упал на землю.
В кратере на месте падения образовалось круглое озеро. Вода этого озера, заряженная светом Зимней Луны, должна помогать в создании могущественных артефактов!
Найди это озеро и вызови меня при помощи этого свитка. А пока ты будешь искать, я буду изучать эту книгу.]],
	answers = {
		{"Я вызову тебя если найду это озеро.", action=function(npc, player)
			game.level:removeEntity(npc)
			player:hasQuest("master-jeweler"):remove_tome(player)
			player:hasQuest("master-jeweler"):start_search(player)
		end},
	}
}

return "welcome"
